//封装一个函数，这个函数可以返回元素的所有子元素节点（兼容到IE6），类似children的功能
function getElementChild(node) {
    var elementNode = [];
    for (var i = 0; i < node.childNodes.length; i++) {
        if (box.childNodes[i].nodeType == 1) {
            elementNode.push(node.childNodes[i]);
        }
    }
    return elementNode;
}
var box = document.getElementById('box1');
var p_pre = document.getElementById('pre');
var fpara = document.getElementById('fpara');
console.log(getElementChild(box));
console.log(getElementChild(p_pre));

//封装一个函数，这个函数可以返回元素的前一个元素兄弟节点（兼容到IE6），类似previousElementSibling的功能
function preElementSibling(node) {
    var o = node;
    while (o.previousSibling.nodeType != null) {
        if (o.previousSibling.nodeType == 1) {
            return o.previousSibling;
        }
        o = node.previousSibling;
    }
    return null;
}
console.log(preElementSibling(fpara));
console.log(preElementSibling(p_pre));

//封装第三个函数，这个函数可以返回元素的所有元素兄弟节点
function allElementSibling(node) {
    //前面的元素兄弟节点
    var prevs = [];
    //后面元素兄弟节点
    var nexts = [];
    var o = node;
    while (o.previousSibling.nodeType != null) {
        if (o.previousSibling.nodeType == 1) {
            prevs.unshift(o.previousSibling);
        }
        o = node.previousSibling;
    }

    o = node;

    // 遍历node的后面的节点
    while (o.nextSibling != null) {
        if (o.nextSibling.nodeType == 1) {
            nexts.push(o.nextSibling);
        }
        o = o.nextSibling;
    }

    // 将两个数组进行合并，然后返回
    return prevs.concat(nexts);
}
console.log(allElementSibling(p_pre));